[% setvar title The Perl 6 Summary for the week ending 2004-03-21 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary for the week ending 2004-03-21'></a><h1>The Perl 6 Summary for the week ending 2004-03-21</h1>
<p>Spring is sprung, the Equinoctal gales seem to have blown themselves
out, I'm a proud step grandfather and life is generally grand.</p>
<p>&quot;So, what's been going on in perl6-internals?&quot; I hear you ask. Let's
find out shall we?</p>
<a name='Parrot grabs SIGINT'></a><h2>Parrot grabs SIGINT</h2>
<p>It appears that embedded Parrot tries to do too much. In particular, it
grabs signals that its embedder may not want it to deal with. Dan
declared that at some point Parrot would have to treat signals as
something the embedding environment controls (And the standalone Parrot
interpreter becomes just another place where the Parrot core is
embedded).</p>
<p><a href='http://groups.google.com/groups?selm=609A6A46-7420-11D8-8D57-000A95A2734C@fotango.com' target='_blank'>groups.google.com</a></p>
<a name='Unprefixed global symbols'></a><h2>Unprefixed global symbols</h2>
<p>Unhygenic namespaces are bad, mm'kay?</p>
<p>Mitchell N Charity posted the results of doing</p>
<pre>    $ nm ./blib/lib/libparrot.a | egrep ' [TDRC] |\.o:' | grep -v
    Parrot_</pre>
<p>and the results are rather embarrassing. Parrot exports a bunch of
symbols that have no Parrot specific prefix, and which have the
potential to clash with symbols that the embedder is using for
something else. Arthur Bergman agreed that doing something about this
would be a jolly good idea and proposed prefixing all externally
visible macros, types and functions with <code>Parrot_</code>.</p>
<p>There followed some discussion of the prefices that are currently in
use within Parrot (there are several); Arthur pointed out that many of
them are still worryingly generic and proposed expanding most of the
'P's in them to a full 'Parrot'. Jeff Clites suggested that it would be
a good idea to get the linker to only expose external entry points in
the first place, though there are issues of cross platform
compatibility to deal with in order to implement that. Dan announced
that, despite the potential pain, this would be the way forward.</p>
<p><a href='http://groups.google.com/groups?selm=200403141711.i2EHBcN09607@vendian.org' target='_blank'>groups.google.com</a></p>
<a name='FAQs?'></a><h2>FAQs?</h2>
<p>Tim Bunce wondered if anyone was tracking the mailing list and adding
questions and (good) answers to the FAQ. Apparently, chromatic has
taken this job upon himself, but he confessed that he hadn't actually
been doing recently. He's on it though.</p>
<p><a href='http://groups.google.com/groups?selm=20040315122604.GA6170@dansat.data-plan.com' target='_blank'>groups.google.com</a></p>
<a name='What does -0.0 mean to you?'></a><h2>What does <code>-0.0</code> mean to you?</h2>
<p>Mitchell N Charity pointed out that PerlNum didn't appear to retaining
the sign of zero. (Which, frankly, does my head in every time I think
about it; minus zero? What's that then?). Apparently retaining the sign
is the Right Thing and, when Mitchell pointed it out, PerlNums were
doing the intuitive thing (zero is zero is zero, and the sign's
irrelevant). It's what the floating point standard mandates though, so
things were changed.</p>
<p><a href='http://groups.google.com/groups?selm=200403151648.i2FGm5A04234@vendian.org' target='_blank'>groups.google.com</a></p>
<a name='GC issues'></a><h2>GC issues</h2>
<p>Jens Rieks continues to stress the object stuff (he's working on writing
an EBNF parser). He posted a test to the list that led Leo Tötsch to
find and fix 3 bugs in the Garbage Collector's DOD phase.</p>
<p><a href='http://groups.google.com/groups?selm=200403151937.19883.parrot@jensbeimsurfen.de' target='_blank'>groups.google.com</a></p>
<a name='Will's questions'></a><h2>Will's questions</h2>
<p>Will Coleda, who's working on implementing Tcl for Parrot had a few
questions. My particular favourite one was &quot;Unicode?&quot;, which seems to
echo a lot of people's feelings on that particular issue.</p>
<p>Leo answered his questions (the answer to the Unicode one being &quot;Needs
a lot of work still.&quot;).</p>
<p>In the thread that followed, Gay, Jerry (Or should that be Jerry Gay?
What's a Summarizer to do eh?) wondered why you wrote <code>store_global
&quot;global&quot;, Pn</code>, but <code>find_global Pn, &quot;global&quot;</code>, which he thought was
inconsistent. My rule of thumb for this is that the target always comes
first on the opcode argument list. Jens Rieks pointed out that opcode
arguments are always ordered so that any <code>OUT</code> arguments come first.</p>
<p><a href='http://groups.google.com/groups?selm=915CEC7F-7707-11D8-A312-000A95909DD0@coleda.com' target='_blank'>groups.google.com</a></p>
<a name='New Tcl release'></a><h2>New Tcl release</h2>
<p>Will Coleda announced the latest version of his Tcl
interpreter. Judging by the Changelog extract he posted, things are
looking very good. You'll find it in the latest Parrots from CVS.</p>
<p><a href='http://groups.google.com/groups?selm=2ED6F516-76F4-11D8-A312-000A95909DD0@coleda.com' target='_blank'>groups.google.com</a></p>
<a name='Classes and metaclasses'></a><h2>Classes and metaclasses</h2>
<p>Larry, Dan and chromatic had a discussion about what's responsible for
dispatch and whether Roles are inherited or acquired by some other
means. It got rather philosophical (I like philosophy). Dan got the last
word.</p>
<p><a href='http://groups.google.com/groups?selm=20040316035325.GA4008@wall.org' target='_blank'>groups.google.com</a></p>
<a name='Numeric weirdness'></a><h2>Numeric weirdness</h2>
<p>Simon Glover found a bug in Parrot's string-&gt;number handling. It turns
out that the route from <code>-1.2</code> to a number is different to that from
<code>&quot;-1.2&quot;</code> to a number. Which means that the two resulting numbers don't
have the same value. Which is bad.</p>
<p>It turned out to be down to hysterical reasons from when IMCC just
generated parrot assembly and then called parrot to do the actual
execution; then parrot would use the same string conversion routines
at compile and run time.</p>
<p>Leo fixed it.</p>
<p><a href='http://groups.google.com/groups?selm=rt-3.0.8-27690-82131.12.435030891164@perl.org' target='_blank'>groups.google.com</a></p>
<a name='Configure.pl and the history of the world'></a><h2>Configure.pl and the history of the world</h2>
<p>Dan pointed out that, as the Ponie work goes on, integrating Parrot
with Perl 5, we need to get the embedding interface fixed up so that it
plays well with others.</p>
<p>He was also concerned that we seemed to be reinventing perl's
<b><i>Configure.SH</i></b> in a horribly piecemeal fashion and suggested that we
should just dig all the stuff out in one swell foop. Larry pointed
everyone at metaconfig and discussion ensued.</p>
<p>Quite how metaconfig sits with the <b><i>miniparrot</i></b> based
configuration/build plan that Dan's talked about was left as an
exercise for the interested reader.</p>
<p><a href='http://groups.google.com/groups?selm=a0601020bbc7d3b29374b@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='Method caching'></a><h2>Method caching</h2>
<p>Work continued on making objects more efficient. The object PMC had a
good deal of fat/indirection removed, and work started on implementing
a method cache. Dan reckoned that the two most useful avenues for
exploration were method caching and thunked vtable lookups.</p>
<p>Zellyn Hunter suggested people take a look at papers on Smalltalk's
dispatch system by Googling for [smalltalk cache].</p>
<p>Mitchell N Charity suggested a couple of possible optimizations (and
benchmarks to see if they're worth trying).</p>
<p>There was some discussion of the costs of creating return
continuations. (My personal view is that the current continuation and
stacks implementation isn't the Right Thing, but I don't have the C
skills to implement what I perceive to be the Right Thing. Which
sucks.)</p>
<p>Leo reckons that, with a method cache and continuation recycling, he's
seeing a 300% improvement in speed on the object oriented Fibonacci
benchmark.</p>
<p><a href='http://groups.google.com/groups?selm=a06010208bc7e332acc5c@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<p><a href='http://groups.google.com/groups?selm=a06010206bc7e29eca1e5@' target='_blank'>groups.google.com</a>[10.0.1.2]</p>
<a name='ICU incorporation'></a><h2>ICU incorporation</h2>
<p>Jeff Clites gave everyone a heads up about the work he's doing on a
patch to incorporate the use of ICU (the Unicode library Parrot will be
using) and some changes to our internal representation of
strings. Apparently the changes give us a simpler and faster internal
representation, which can't be bad.</p>
<p><a href='http://groups.google.com/groups?selm=FB17458A-783C-11D8-8121-000393A6B9DA@mac.com' target='_blank'>groups.google.com</a></p>
<a name='Continuation usage'></a><h2>Continuation usage</h2>
<p>Jens Rieks and Piers Cawley both had problems with continuations. Leo
Tötsch tried explain what they were doing wrong. There seemed to be a
fair amount of talking past each other going on (at least, that's how
it felt from my point of view) but I think communication has been
established now. Hopefully this will lead to a better set of tests for
continuation usage and a better understanding of what they're for and
how to use them.</p>
<p><a href='http://groups.google.com/groups?selm=200403181844.29274.parrot@jensbeimsurfen.de' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?selm=m2znaata3d.fsf@obelisk.bofh.org.uk' target='_blank'>groups.google.com</a></p>
<a name='Optimization in context'></a><h2>Optimization in context</h2>
<p>Mitchell Charity argued that we should think carefully before doing too
much more optimization of Parrot until we've got stuff working
correctly. Leo agreed, up to a point, but pointed out that optimizing
for speed is lot of fun. Brent Royal-Gordon thought that it was a
balancing act, some things are painfully slow and need optimizing,
at other times, things are painfully none existent and need to be
implemented. Objects were both of those things for a while.</p>
<p>Piers Cawley said that, for all that objects were slow (getting
faster), he thought they were rather lovely.</p>
<p><a href='http://groups.google.com/groups?selm=200403211713.i2LHDDK12504@vendian.org' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile, in perl6-language'></a><h1>Meanwhile, in perl6-language</h1>
<a name='Hash subscriptor'></a><h2>Hash subscriptor</h2>
<p>At the back end of the previous week, Larry introduced the idea of
subscripting hashes with <code>%hash«baz»</code> when you mean
<code>%hash{'baz'}</code>. This surprised John Williams (and others I'm sure, it
certainly surprised me, but it's one of those &quot;What? Oh... that makes a
lot of sense&quot; type surprises.) Larry explained his thinking on the
issue. Apparently it arose because <code>:foo('bar')</code> was too ugly to live,
but too useful to die, so <code>:foo«bar»</code> was invented, and once you have
that, it is but a short step to <code>%foo«bar»</code>. (If you've not read
Exegesis 7, you probably don't know that <code>:foo«bar»</code> is equivalent to
<code>foo =&gt; 'bar'</code>, but you do now.) John wasn't convinced though. It
remains to be seen if he's convinced Larry.</p>
<p>Larry: unfortunately it's an unavoidable part of my job description to
decide how people should be surprised.</p>
<p><a href='http://groups.google.com/groups?selm=Pine.LNX.4.33.0403151143160.10623-100000@sharkey.morinda.com' target='_blank'>groups.google.com</a></p>
<a name='Mutating methods'></a><h2>Mutating methods</h2>
<p>Oh lord... I'm really not following this particular thread. The
mutating methods thread branched out in different directions that made
my head hurt. I *think* we're still getting</p>
<pre>    $aString.lc;  # None mutating, returns a new lower case string
    $aString.=lc; # Mutating, makes $aString lower case</pre>
<p>I'm going to bottle out of summarizing the rest of the
thread. Hopefully subthread perpetrators will be kind to an ageing
Summarizer and change subject lines to reflect the content of a given
subthread. Ta.</p>
<a name='Some questions about operators'></a><h2>Some questions about operators</h2>
<p>Joe Gottman has been reading Synopsis 3 and had a bunch of
questions. Much of the ensuing discussion covered the use of the
'broken bar' glyph as an infix form of the <code>zip</code> operator. Which I
didn't quite realise as I skimmed the thread during the week because
courier doesn't seem to distinguish between the broken bar and the
standard bar. Larry later suggested using the yen (¥) symbol instead,
which has the advantage of looking a little like a zipper. I really
hope that firms up from suggestion to design call.</p>
<p><a href='http://groups.google.com/groups?selm=200403200148.i2K1mJkG001378@ms-smtp-02-eri0.southeast.rr.com' target='_blank'>groups.google.com</a></p>
<a name='Announcements, Acknowledgements, Apologies'></a><h2>Announcements, Acknowledgements, Apologies</h2>
<p>Whee! I have an announcement! This summary is dedicated to my step
grandson, Isaac Stamper, born 2004-03-17T13:13GMT at the RVI in
Newcastle. There are (of course) photos online at
<a href='http://www.bofh.org.uk/photos/Isaac/,' target='_blank'>www.bofh.org.uk</a> but you don't have to go and
look at them.</p>
<p>I'd also like to apologise to everyone on perl6-internals for my
complete inability to post attachments to the list. I hope that those
who are interested got to see my first cut at a Parrot implementation
of xUnit in the end.</p>
<p>If you find these summaries useful or enjoyable, please consider
contributing to the Perl Foundation to help support the development of
Perl. You might also like to send me feedback at
mailto:<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>, or drop by my website, maybe I'll
add some content to it this week.</p>
<p><a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> -- The Perl Foundation</p>
<p><a href='http://dev.perl.org/perl6/' target='_blank'>dev.perl.org</a> -- Perl 6 Development site</p>
<p><a href='http://www.bofh.org.uk/' target='_blank'>www.bofh.org.uk</a> -- My website, &quot;Just a Summary&quot;</p>
</div>
